﻿dynamic class My3D.Point3DSlow {
	private var _x:Number;
	private var _y:Number;
	private var _z:Number;
	//Point x value after project
	private var _X:Number;
	//Point y value after project
	private var _Y:Number;
	//Point z value after project
	private var _Z:Number;
	
	private var _U:Number = 0;
	private var _V:Number = 0;
	
	public function get U():Number {
		return this._U;
	}
	public function get V():Number {
		return this._V;
	}
	public function set U(value:Number) {
		this._U = value;
	}
	public function set V(value:Number) {
		this._V = value;
	}
	
	public function get x():Number {
		return this._x;
	}
	public function get y():Number {
		return this._y;
	}
	public function get z():Number {
		return this._z;
	}
	
	public function set x(value:Number) {
		this._x = value;
	}
	public function set y(value:Number) {
		this._y= value;
	}
	public function set z(value:Number) {
		this._z= value;
	}
	
	public function get X():Number {
		return this._X;
	}
	public function get Y():Number {
		return this._Y;
	}
	public function get Z():Number {
		return this._Z;
	}
	
	public function set X(value:Number) {
		this._X = value;
	}
	public function set Y(value:Number) {
		this._Y= value;
	}
	public function set Z(value:Number) {
		this._Z= value;
	}
	
	
	public function Mol():Number {
		return Math.sqrt(_x * _x + _y * _y + _z * _z);
	}
	
	
	public function Point3DSlow(xx:Number,yy:Number,zz:Number) {
		xx = ((xx == undefined)? 0:xx);
		yy = ((yy == undefined)? 0:yy);
		zz = ((zz == undefined)? 0:zz);
		this._X=this._x = xx;
		this._Y=this._y = yy;
		this._Z=this._z = zz;
	}
	
	public function clone():Point3D {
		var p:Point3D = new Point3D(this._x, this._y, this._z);
		p.U = this._U;
		p.V = this._V;
		return p;
	}
	
	
	public function toString() {
		return "(" + _x + "," + _y + "," + _z + ")";
	}
	
	
	
}